#插入排序大概就是将无序列表分成两部分，刚开始第一部分是有序的，后一部分是无序的，然后不断的从后面的序列中抽取数据放到前面中，并排序

#不但用了索引，而且用了切片，还用了插入，效率颇为低下
def insert_sort(alist):
    newlist = [alist[0]]
    for i in alist[1:]:
        for j in newlist:
            if i <= j:
                newlist.insert(newlist.index(j),i)
                break
        else:
            newlist.append(i)
    return newlist




#课本标准的插入排序解法
def insertionsort(alist):
    for index in range(1,len(alist)):   #这一个循环是为了将后面的数据全都处理一遍，像这种算法应当首先考虑指针
        currentvalue = alist[index]
        position = index

        while position > 0 and alist[position-1] > currentvalue:       #这一步是从后向前作比较
            alist[position] = alist[position-1]                        #这一步的作用是将稍大的数字向后传递，蠕动，精妙
            position -=1
        alist[position] = currentvalue
    return  alist


print(insertionsort([2,1,5,6,3,4]))